package com.kaifamiao.www.demo.do0802;

public class NumberFormatter {
    private char[] chs = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};


    /**
     * 转十六进制
     * @param num
     * @return
     */
    public String toHex(int num){
//        if (num >= 0){
//            int count = 0;
//            char[] resault = new char[32];
//            while (num/16!=0){
//             resault[count]= chs[num%16];
//             count++;
//             num/=16;
//            }
//            resault[count] = chs[num];
//            String str = "";
//            for(int i = count;i>=0;i--){
//                str += resault[i];
//            }
//            return str;
//        }
         return toStringWriteBase(num,16);
     }
    /**
     * 转八进制
     * @param num
     * @return
     */
    public String to0ctal(int num) {

//        if (num >= 0){
//            int count = 0;
//            char[] resault = new char[32];
//            while (num/8 !=0){
//                resault[count]=chs[num%8];
//                count++;
//                num/=8;
//            }
//            //最后一位
//            resault[count] = chs[num];
//            String str = "";
//            for(int i =count;i >= 0;i--){
//                str += resault[i];
//            }
//            return str;
//        }
        return toStringWriteBase(num,8);
    }

    /**
     * 转二进制
     * @param num
     * @return
     */
    public String toBinary(int num){

//        if (num >= 0){
//            int count = 0;
//            char[] resault = new char[32];
//            while (num/2 !=0){
//             resault[count]=chs[num%2];
//             count++;
//             num/=2;
//            }
//            //最后一位
//            resault[count] = chs[num];
//            String str = "";
//            for(int i =count;i >= 0;i--){
//                str += resault[i];
//            }
//            return str;
// }
        return toStringWriteBase(num,2);
    }
private String toStringWriteBase(int num ,int base){
        if(num>=0){
            if(base >=0&&base<=16){
                int count = 0;
                char[] resault = new char[32];
                while(num/base!=0){
                    resault[count]=chs[num%base];
                    count++;
                    num/=base;
                }
                resault[count] = chs[num];
                String str = "";
                for(int i =count;i >= 0;i--){
                    str += resault[i];
                }
                return str;
            }
        }
        return null;
    }
    /**
     * 2 进制转 10 进制
     * @param str
     * @return
     */
    public int binaryToInt(String str){
        return 0;
    }
}
